diff --git a/board/MAI/menu/menu.h b/board/MAI/menu/menu.h
new file mode 100644
index 0000000..e5886b8
--- /dev/null
+++ b/board/MAI/menu/menu.h
@@ -0,0 +1,174 @@
+#ifndef MENU_H
+#define MENU_H
+
+/* A single menu */
+typedef void (*menu_finish_callback)(struct menu_s *menu);
+
+typedef struct menu_s
+{
+    char *name;                     /* Menu name */
+    int  num_options;               /* Number of options in this menu */
+    int  flags;                     /* Various flags - see below */
+    int  option_align;              /* Aligns options to a field width of this much characters if != 0 */
+
+    struct menu_option_s **options; /* Pointer to this menu's options */
+    menu_finish_callback callback;  /* Called when the menu closes */
+} menu_t;
+
+/*
+ * type: Type of the option (see below)
+ * name: Name to display for this option
+ * help: Optional help string
+ * id  : optional id number
+ * sys : pointer for system-specific data, init to NULL and don't touch
+ */
+
+#define OPTION_PREAMBLE				\
+    int type;                     		\
+    char *name;   				\
+    char *help;   				\
+    int id;                                     \
+    void *sys;                                  \
+
+
+/*
+ * Menu option types.
+ * There are a number of different layouts for menu options depending
+ * on their types. Currently there are the following possibilities:
+ *
+ * Submenu:
+ *   This entry links to a new menu.
+ *
+ * Boolean:
+ *   A simple on/off toggle entry. Booleans can be either yes/no, 0/1 or on/off.
+ *   Optionally, this entry can enable/disable a set of other options. An example would
+ *   be to enable/disable on-board USB, and if enabled give access to further options like
+ *   irq settings, base address etc.
+ *
+ * Text:
+ *   A single line/limited number of characters text entry box. Text can be restricted
+ *   to a certain charset (digits/hex digits/all/custom). Result is also available as an
+ *   int if numeric. 
+ *
+ * Selection:
+ *   One-of-many type of selection entry. User may choose on of a set of strings, which
+ *   maps to a specific value for the variable.
+ *
+ * Routine:
+ *   Selecting this calls an entry-specific routine. This can be used for saving contents etc.
+ *
+ * Custom:
+ *   Display and behaviour of this entry is defined by a set of callbacks.
+ */
+
+#define MENU_SUBMENU_TYPE 0
+typedef struct menu_submenu_s
+{
+    OPTION_PREAMBLE
+
+    menu_t *   submenu;            /* Pointer to the submenu */
+} menu_submenu_t;
+
+#define MENU_BOOLEAN_TYPE 1
+typedef struct menu_boolean_s
+{
+    OPTION_PREAMBLE
+
+    char *variable;                /* Name of the variable to getenv()/setenv() */
+    int subtype;                   /* Subtype (on/off, 0/1, yes/no, enable/disable), see below */
+    int mutex;                     /* Bit mask of options to enable/disable. Bit 0 is the option
+				      immediately following this one, bit 1 is the next one etc.
+				      bit 7 = 0 means to disable when this option is off,
+				      bit 7 = 1 means to disable when this option is on.
+				      An option is disabled when the type field's upper bit is set */
+} menu_boolean_t;
+
+/* BOOLEAN Menu flags */
+#define MENU_BOOLEAN_ONOFF         0x01
+#define MENU_BOOLEAN_01            0x02
+#define MENU_BOOLEAN_YESNO         0x03
+#define MENU_BOOLEAN_ENDIS         0x04
+#define MENU_BOOLEAN_TYPE_MASK     0x07
+
+
+#define MENU_TEXT_TYPE 2
+typedef struct menu_text_s
+{
+    OPTION_PREAMBLE
+
+    char *variable;                /* Name of the variable to getenv()/setenv() */
+    int maxchars;                  /* Max number of characters */
+    char *charset;                 /* Optional charset to use */
+    int flags;                     /* Flags - see below */
+} menu_text_t;
+
+/* TEXT entry menu flags */
+#define MENU_TEXT_NUMERIC         0x01
+#define MENU_TEXT_HEXADECIMAL     0x02
+#define MENU_TEXT_FREE            0x03
+#define MENU_TEXT_TYPE_MASK       0x07
+
+
+#define MENU_SELECTION_TYPE 3
+typedef struct menu_select_option_s
+{
+    char *map_from;               /* Map this variable contents ... */
+    char *map_to;                 /* ... to this menu text and vice versa */
+} menu_select_option_t;
+
+typedef struct menu_select_s
+{
+    OPTION_PREAMBLE
+
+    int num_options;             /* Number of mappings */
+    menu_select_option_t **options;
+                                 /* Option list array */
+} menu_select_t;
+
+
+#define MENU_ROUTINE_TYPE 4
+typedef void (*menu_routine_callback)(struct menu_routine_s *);
+
+typedef struct menu_routine_s
+{
+    OPTION_PREAMBLE
+    menu_routine_callback callback;
+                                 /* routine to be called */ 
+    void *user_data;             /* User data, don't care for system */
+} menu_routine_t;
+    
+
+#define MENU_CUSTOM_TYPE 5
+typedef void (*menu_custom_draw)(struct menu_custom_s *);
+typedef void (*menu_custom_key)(struct menu_custom_s *, int);
+
+typedef struct menu_custom_s
+{
+    OPTION_PREAMBLE
+    menu_custom_draw drawfunc;
+    menu_custom_key  keyfunc;
+    void *user_data;
+} menu_custom_t;
+
+/*
+ * The menu option superstructure
+ */
+typedef struct menu_option_s
+{
+    union
+    {
+	menu_submenu_t m_sub_menu;
+	menu_boolean_t m_boolean;
+	menu_text_t    m_text;
+	menu_select_t  m_select;
+	menu_routine_t m_routine;
+    };
+} menu_option_t;
+
+/* Init the menu system. Returns <0 on error */
+int menu_init(menu_t *root);
+
+/* Execute a single menu. Returns <0 on error */
+int menu_do(menu_t *menu);
+
+#endif
